package main

import "fmt"

func main() {

	//	在Golang中，程序遇到defer关键字后，不会立即执行defer后的语句，二十将defer后的语句压入一个栈中，然后继续执行函数后面的语句
	// 应用场景：数据库连接池，可以先用defer关闭数据库连接池，而不用担心忘记关闭。
	add(11, 22)

}

func add(a int, b int) int {
	// defer 会将当时 的值一起压入栈中，不会受后续修改而影响，在上线问执行完成后，再执行defer
	defer fmt.Println("a", a)
	defer fmt.Println("b", b)

	//栈的特点，先进后出
	// 在函数执行完毕后，从栈中取出语句开始执行，安装先进后出的规则执行语句
	sum := a + b
	fmt.Println("sum", sum)
	return sum
}
